/*
2021-8-19
https://www.acwing.com/problem/content/1119/
*/ 
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;
const int N=21;
int n;
string word[N];
int g[N][N];
int ans=0;
char start;
int used[N];

void dfs(string dragon,int last)
{
    ans=max(ans,(int)dragon.size());
    used[last]++;
    
    for(int i=0;i<n;i++)
        if(g[last][i] && used[i]<2)
            dfs(dragon+word[i].substr(g[last][i]),i);
    
    used[last]--;
}

int main()
{
    cin>>n;
    for(int i=0;i<n;i++) cin>>word[i];
    cin>>start;
    
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
        {
            string a=word[i],b=word[j];
            for(int k=1;k<min(a.size(),b.size());k++)
                if(a.substr(a.size()-k,k)==b.substr(0,k))
                {
                    g[i][j]=k;
                    break;
                }
        }
    
    for(int i=0;i<n;i++)
        if(word[i][0]==start)
            dfs(word[i],i);
    
    cout<<ans<<endl;
    
    return 0;
}
